<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body onclick="f()">

    <script>

        // 函数
        //    作用域，作用域链
        //    递归
        //    回调:把函数当做参数 callback

        // 定时器和延时器
        //    每隔一段时间执行一次，延迟一段时间执行一次
        //    清除的时候  可以混用 clearInterval / clearTimeout
        //    返回值是数字
        //    setInterval(cb , time)    setInterval('cb()' , time)
        //    定时器和延时器的第三个参数开始，都是传给cb这个函数的  ************************
        //    异步
        //    回调 --- 


        // JS代码的执行顺序
        //    预编译
        //    同步和异步  ----  事件轮询 / 事件循环 / event loop

        // var t1 = setInterval()   // 1
        // var t2 = setTimeout()   // 2
        // var t3 = setInterval()  // 3

        // clearInterval(1);  // 清除的是第几个定时器或者延时器
        // clearInterval(2);
        // // 异步


        // console.log(a);
        // setInterval(function () {
        //     console.log(1);
        //     setInterval(function () {
        //         console.log(3);
        //     }, 1900)
        // }, 19)

        // setInterval(function () {
        //     console.log(4);
        // }, 190)

        // var a = 2;

        // console.log(2);


        // setInterval(f, 1000)
        // setInterval('f()', 1000)


        // function f() {
        //     console.log(2);
        // }


        // document.onclick = f;     // ***************************

        function f(a, b) {
            console.log(a + b);
        }


        // setInterval(f, 1000, 9, 8)

        // setInterval('f(9,8)', 1000)


        setInterval(function () {    // 一次性函数
            console.log(1);
        }, 1000)

        setInterval(f, 1000)       // 具名函数是可以复用的


        function f() {
            return Math.random()
        }



    </script>

</body>

</html>